﻿Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports SIAVU.Persistencia

Namespace Dominio
    'Public MustInherit Class Actividad
    <Serializable()> _
    Public Class Actividad

#Region "Variables"
        Private _ActividadID As Long
        Private _PostaID As Long
        'Private _Programacion As Programacion
        Private _Descripcion As String
        Private _FechaInicio As Date
        Private _FechaFin As Date
        Private _Duracion As Integer
        Private _EstadoActividad As EEstadoActividad
        Private _TipoActividad As ETipoActividad
        Private _Observacion As String

        Private _CiudadDestinoID As Long
        Private _InformacionCompleta As String = String.Empty
        Private _Motivo As String = String.Empty
        Private _DescripcionResource As String

#End Region

#Region "Propiedades"
        Public Overridable Property ActividadID() As Long
            Get
                Return _ActividadID
            End Get
            Set(ByVal value As Long)
                _ActividadID = value
            End Set
        End Property

        Public Overridable Property PostaID() As Long
            Get
                Return _PostaID
            End Get
            Set(ByVal value As Long)
                _PostaID = value
            End Set
        End Property

        Public Overridable ReadOnly Property Descripcion() As String
            Get
                Return _Descripcion
            End Get
        End Property

        Public Overridable Property FechaInicio() As Date
            Get
                Return _FechaInicio
            End Get
            Set(ByVal value As Date)
                _FechaInicio = value
            End Set
        End Property

        Public Overridable Property FechaFin() As Date
            Get
                Return _FechaFin
            End Get
            Set(ByVal value As Date)
                _FechaFin = value
            End Set
        End Property

        Public Overridable Property Duracion() As Integer
            Get
                Return _Duracion
            End Get
            Set(ByVal value As Integer)
                _Duracion = value
            End Set
        End Property

        Public Overridable Property EstadoActividad() As EEstadoActividad
            Get
                Return _EstadoActividad
            End Get
            Set(ByVal value As EEstadoActividad)
                _EstadoActividad = value
            End Set
        End Property

        Public Overridable Property TipoActividad() As ETipoActividad
            Get
                Return _TipoActividad
            End Get
            Set(ByVal value As ETipoActividad)
                _TipoActividad = value
            End Set
        End Property

        Public Overridable Property Observacion() As String
            Get
                Return _Observacion
            End Get
            Set(ByVal value As String)
                _Observacion = value
            End Set
        End Property

        Public Overridable ReadOnly Property FechaFinFicticia() As DateTime
            Get
                Return Me.FechaInicioFicticia.AddDays(1)
            End Get
        End Property

        '//Para que solo se vea un cuadrito en el TimeLine view
        Public Overridable ReadOnly Property FechaInicioFicticia() As DateTime
            Get
                Return New Date(Me.FechaInicio.Year, Me.FechaInicio.Month, Me.FechaInicio.Day)
            End Get
        End Property

        Public Overridable Property CiudadDestidoID() As Long
            Get
                Return _CiudadDestinoID
            End Get
            Set(ByVal value As Long)
                _CiudadDestinoID = value
            End Set
        End Property

        Public Overridable Property InformacionCompleta() As String
            Get
                Return _InformacionCompleta
            End Get
            Set(ByVal value As String)
                _InformacionCompleta = value
            End Set
        End Property

        Public Overridable ReadOnly Property TipoActividadID() As Integer
            Get
            End Get
        End Property

        Public Overridable Property Motivo() As String
            Get
                Return _Motivo
            End Get
            Set(ByVal value As String)
                _Motivo = value
            End Set
        End Property

        Public Overridable Property DescripcionResource() As String
            Get
                Return _DescripcionResource
            End Get
            Set(ByVal value As String)
                _DescripcionResource = value
            End Set
        End Property


#End Region

#Region "Metodos"

        Public Overridable Function confirmarActividad() As Boolean
            Try
                Dim oActividadAux As New Actividad
                oActividadAux.ActividadID = ActividadID

                Dim oActividadPersistencia As New ActividadPersistencia
                oActividadPersistencia.getById(oActividadAux)

                oActividadAux.EstadoActividad = EEstadoActividad.Confirmada

                oActividadPersistencia.Actualizar(oActividadAux)
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function

        Public Overridable Function noConfirmarActividad() As Boolean
            Try
                Dim oActividadAux As New Actividad
                oActividadAux.ActividadID = ActividadID

                Dim oActividadPersistencia As New ActividadPersistencia
                oActividadPersistencia.getById(oActividadAux)

                oActividadAux.EstadoActividad = EEstadoActividad.NoConfirmada

                oActividadPersistencia.Actualizar(oActividadAux)
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function

        Public Overridable Function Clonar() As Object


            If Me.TipoActividad = ETipoActividad.Posta Then
                Dim oActividadPostaAux As New ActividadPosta
                oActividadPostaAux.Posta = DirectCast(Me, ActividadPosta).Posta
                oActividadPostaAux.ActividadID = Me.ActividadID
                oActividadPostaAux.CiudadDestidoID = Me.CiudadDestidoID
                oActividadPostaAux.DescripcionResource = Me.DescripcionResource
                oActividadPostaAux.EstadoActividad = Me.EstadoActividad
                oActividadPostaAux.FechaFin = Me.FechaFin
                oActividadPostaAux.FechaInicio = Me.FechaInicio
                oActividadPostaAux.InformacionCompleta = Me.InformacionCompleta
                oActividadPostaAux.Motivo = Me.Motivo
                oActividadPostaAux.Observacion = Me.Observacion
                'oActividadPostaAux.PostaID = Me.PostaID
                'oActividadPostaAux.TipoActividad = Me.TipoActividad

                Return oActividadPostaAux
            Else
                Dim oActividadAux As New Actividad
                oActividadAux.ActividadID = Me.ActividadID
                oActividadAux.CiudadDestidoID = Me.CiudadDestidoID
                oActividadAux.DescripcionResource = Me.DescripcionResource
                oActividadAux.EstadoActividad = Me.EstadoActividad
                oActividadAux.FechaFin = Me.FechaFin
                oActividadAux.FechaInicio = Me.FechaInicio
                oActividadAux.InformacionCompleta = Me.InformacionCompleta
                oActividadAux.Motivo = Me.Motivo
                oActividadAux.Observacion = Me.Observacion
                oActividadAux.PostaID = Me.PostaID
                oActividadAux.TipoActividad = Me.TipoActividad

                Return oActividadAux
            End If


        End Function

#End Region

    End Class
End Namespace

